#include "main.h"

int main (void){

	int eTour=0;
	int eNombreJoueur;
	int eNombreJoueurIncremente;
	int eNombreJoueurIncrementeTour;
	int eNumEquipe=0;

	outil_amorcer();
	outil_init();
	Alea0();

	t_motte** pMotte= Vue_init(elmax,ecmax);
	Vue_bord(pMotte,elmax,ecmax);

	eNombreJoueur=eEcrireNombreJoueur();
	int* classement=Palmares_init(eNombreJoueur);

	Nourriture_init(pMotte,elmax,ecmax,eTour);

	t_liste** pRattaupe = Rattaupes_init(pMotte,elmax,ecmax,eNombreJoueur);
	
	for(eNombreJoueurIncrementeTour=0;eNombreJoueurIncrementeTour<eNombreJoueur;eNombreJoueurIncrementeTour++){
		while(!liste_vide(pRattaupe[eNombreJoueurIncrementeTour])){
			printf("Tour n°%i de Koh-Lantaupe !\n",eTour+1);
			for(eNombreJoueurIncremente=0;eNombreJoueurIncremente<eNombreJoueur;eNombreJoueurIncremente++){
				if(!liste_vide(pRattaupe[eNombreJoueurIncremente])){
					printf("Joueur de l'équipe n°%i, à vous de jouer !\n",eNombreJoueurIncremente+1);
					TourSuivant(pMotte,pRattaupe[eNombreJoueurIncremente],pRattaupe,eTour,eNombreJoueur,classement);
				}
			}
			eTour++;
			Palmares_Incremente(pRattaupe, eNombreJoueur, classement);
		}
	}

	Palmares_Afficher (eNombreJoueur, classement);
	MemoireVider(pMotte, pRattaupe, eNombreJoueur,classement);

	return 0;

}

void TourSuivant(t_motte** pMotte, t_liste* pRattaupe, t_liste** ptabRattaupe, int eTour, int eNombreJoueur, int* classement){
	//Définit les actions pour chaque tour (elmax et ecmax pas nécessaire en paramètre car en define dans main.h
	Nourriture_init(pMotte,elmax,ecmax,eTour);
	Sante_decremente(pRattaupe,eTour);
	Nourriture_decremente(pMotte, elmax, ecmax);
	Mort_Rattaupe(pMotte,pRattaupe);
	Enceinte_incremente(pRattaupe,eTour);
	Reproduction_init(pRattaupe, pMotte, elmax, ecmax);
	Accouchement(pRattaupe,pMotte);
	Rattaupe_Grandis(pRattaupe);
	Vue_afficher(pMotte,elmax,ecmax);
	Scene_Tour_Suivant(pRattaupe,pMotte);
}

int eEcrireNombreJoueur (){
	//Définit le nombre de joueur
	int eNombreJoueur=0;
	printf("Rentrez le nombre de joueur désirant jouez à Koh-Lantaupe (entre 2 et 4)\n");
	scanf("%i",&eNombreJoueur);
	while(eNombreJoueur<2||eNombreJoueur>4){
		printf("Le nombre de joueur doit être compris entre 2 et 4\n");
		scanf("%i",&eNombreJoueur);
	}

	return eNombreJoueur;
}

void MemoireVider(t_motte** pMotte, t_liste** pRattaupe, int eNombreJoueur, int* classement){
	int eNombreJoueurIncremente;
	int eLigne,eColonne;

	for(eNombreJoueurIncremente=0;eNombreJoueurIncremente<eNombreJoueur;eNombreJoueurIncremente++){
		free(pRattaupe[eNombreJoueurIncremente]);
	}

	for(eLigne=0;eLigne<elmax;eLigne++){
		free(pMotte[eLigne]);
	}
	free(pRattaupe);
	free(pMotte);
	free(classement);
}





